package presentation;

import java.io.IOException;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import dao.ComisionDAO;
import dao.EmpleadoDAO;
import dao.PremioDAO;
import dao.ProductoDAO;
import dao.VentaDAO;
import model.Comision;
import model.Empleado;
import model.Premio;
import model.Producto;
import model.Venta;
import services.ReportesServicio;
import services.VentasRealizadasServicio;

/**
 * Servlet implementation class ConsultarVentasRealizadas
 */
@WebServlet("/ConsultarVentasRealizadas")
public class ConsultarVentasRealizadas extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public ComisionDAO comisionesService = null;
	public PremioDAO premiosService = null;
	public EmpleadoDAO empleadosService = null;
	public VentaDAO ventasService = null;
	public ProductoDAO productosService = null;
	@Override
	public void init(ServletConfig config) {
		WebApplicationContext context = WebApplicationContextUtils
				.getRequiredWebApplicationContext(config.getServletContext());
		this.comisionesService = (ComisionDAO) context.getBean(ComisionDAO.class);
		this.premiosService = (PremioDAO) context.getBean(PremioDAO.class);
		this.empleadosService = (EmpleadoDAO) context.getBean(EmpleadoDAO.class);
		this.ventasService = (VentaDAO) context.getBean(VentaDAO.class);
		this.productosService = (ProductoDAO) context.getBean(ProductoDAO.class);

	}
	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public ConsultarVentasRealizadas() {
		super();
		
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		List<Comision> comisiones = this.comisionesService.getAll();
		request.getSession().setAttribute("Comisiones", comisiones);
		List<Premio> premios = this.premiosService.getAll();
		request.getSession().setAttribute("Premios", premios);
		List<Empleado> empleados = this.empleadosService.getVendedores();
		request.getSession().setAttribute("Vendedores", empleados);

		List<Producto> productos = this.productosService.getAll();
		request.getSession().setAttribute("Productos", productos);
		List<Venta> ventas = this.ventasService.getAll();
		request.getSession().setAttribute("Ventas", ventas);

		response.sendRedirect("ConsultarVentasRealizadas.jsp");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String mensaje = null;
		List<Venta> ventas = this.ventasService.getAll();
		
		boolean valido = true;
		
		try{
			if (!ReportesServicio.validarFecha(java.sql.Date.valueOf(request.getParameter("fechainicio")), java.sql.Date.valueOf(request.getParameter("fechafin")))){
				valido = false;
			}
		}
		catch (Exception e){
			valido = false;
		}
		
		Empleado usuario = (Empleado) request.getSession().getAttribute("UsuarioLogeado");

	
		if (valido) {
			Date fecha_inicio = java.sql.Date.valueOf(request.getParameter("fechainicio"));
			Date fecha_fin = java.sql.Date.valueOf(request.getParameter("fechafin"));
			List<Venta> ventas_filtradas = new ArrayList<Venta>();
			ventas_filtradas = VentasRealizadasServicio.consultarVentasRealizadas(ventas, fecha_inicio, fecha_fin,usuario.getDni());
			
			
			request.getSession().setAttribute("ConsultaVentas", ventas_filtradas);
			


		}
		else{
			request.getSession().setAttribute("ConsultaVentas", null);
			mensaje = "Seleccionar bien las fechas.";
							
			

		}
		
		request.getSession().setAttribute("MensajeConsultaVentas", mensaje);
		response.sendRedirect("ConsultarVentasRealizadas.jsp");
	}

}
